css: Plug a memory leak
authorMatthias Clasen <mclasen@redhat.com>
Thu, 9 Jul 2020 16:14:18 +0000 (12:14 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 9 Jul 2020 16:14:18 +0000 (12:14 -0400)
When a rule has no styles, we don't add it
to our ruleset. Since we are not adopting
the selectors in this case, we must free them.

Fixes: #2921
gtk/gtkcssprovider.c

index 51b545f29d0c3d4ea0cbd37a6c63ca7c4303f2a8..7dbc6924f5bf7ce51929b6ce78db7b1068144ef9 100644 (file)
@@ -562,10 +562,12 @@ css_provider_commit (GtkCssProvider  *css_provider,
 
   if (ruleset->styles == NULL)
     {
+      for (i = 0; i < n_selectors; i++)
+        _gtk_css_selector_free (selectors[i]);
       return;
     }
 
-  for (i = 0; i < n_selectors; i ++)
+  for (i = 0; i < n_selectors; i++)
     {
       GtkCssRuleset *new;
 
@@ -915,7 +917,7 @@ parse_ruleset (GtkCssScanner *scanner)
     {
       guint i;
       gtk_css_parser_error_syntax (scanner->parser, "Expected '{' after selectors");
-      for (i = 0; i < n_selectors; i ++)
+      for (i = 0; i < n_selectors; i++)
         _gtk_css_selector_free (selectors[i]);
       gtk_css_parser_skip_until (scanner->parser, GTK_CSS_TOKEN_OPEN_CURLY);
       gtk_css_parser_skip (scanner->parser);